package com.huluobo.a2205kotlinjetpackdemo.lifecycle

import android.app.Dialog
import android.content.Context
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import com.huluobo.a2205kotlinjetpackdemo.R

/**
 *  Created by LC on 2024/9/11.
 *  自带生命周期管理的dialog,可以跟随展示的activity的生命周期,自行展示和销毁
 */
class TipDialog(context: Context) : Dialog(context), LifecycleObserver {
    init {
        //init相当于构造方法,但是与构造方法不停的地方,是它不是一个方法,是一个类似静态块的位置
        //只要是当前类进行了实例化,也就是new,就会调用到init

        //is 判断是否属于一个类型,当前判断的是否是一个AppCompatActivity  在Java中就是 instanceOf
        if (context is AppCompatActivity) {
            //如果是的话,就证明它已经实现了LifeCycleOwner的接口,可以直接添加订阅关系
            context.lifecycle.addObserver(this)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.view_dialog)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    private fun onShow() {
        show()
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    private fun onDismiss() {
        if (isShowing) {
            dismiss()
        }
    }

}